草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

c# - 自动装箱和拆箱在 Java 和 C# 中的行为是否不同

我正在手动将代码从Java(1.6)转换为C#,发现基元(int和double)的行为有些困难。在C#中,似乎几乎所有的转换都是自动发生的Listlist1=newList();//legal,C#doubled0=3.0;list1.Add(d0);//legal,C#Doubledd=2.3f;//legal,C#list1.Add(dd);//legal,C#Listlist2=newList();//legal,C#doubled1=3.0;list2.Add(d1);//legal,C#list2.Add(2.0);//legal,C#doubled2=list2.get(0

java - 为什么 Volatile 行为异常

我最近遇到了volatile关键字的这种奇怪行为。据我所知,volatile关键字应用于变量以反射(reflect)对数据所做的更改一个线程传递给另一个线程的变量。volatile关键字可防止在线程上缓存数据。我做了一个小测试............我使用了一个名为count的整型变量,并在其上使用了volatile关键字。然后做了2个不同的线程来增加变量值到10000,所以最终结果应该是20000。但情况并非总是如此,使用volatile关键字时,我无法始终获得20000,而是18534、15000等......有时会获得20000。但是当我使用synchronized关键字时,它工

Java乘法运算行为

我写了一个方法将给定数字从天数转换为毫秒数:privatelongexpireTimeInMilliseconds;...publicvoidsetExpireTimeInDays(intexpireTimeInDays){expireTimeInMilliseconds=expireTimeInDays*24*60*60*1000;}我很难弄清楚我做错了什么。现在我的问题:这个错误这么明显吗?修正方法:privatelongexpireTimeInMilliseconds;...publicvoidsetExpireTimeInDays(intexpireTimeInDays){ex

java - ThreadPoolExecutor 具有自定义行为的固定线程池

我是这个主题的新手...我正在使用通过Executors.newFixedThreadPool(10)创建的ThreadPoolExecutor,在池满后我开始得到RejectedExecutionException。有没有办法“强制”执行者将新任务置于“等待”状态,而不是拒绝它并在池释放时启动它?谢谢关于这个的问题https://github.com/evilsocket/dsploit/issues/159涉及的代码行https://github.com/evilsocket/dsploit/blob/master/src/it/evilsocket/dsploit/net/Net

java - Java Servlet 中的静态变量行为

我正在开发一个javaservlet,它在运行时会在新线程中启动不同的对象方法。这些线程应该访问描述特定servlet实例的变量,比如jobId。出于这个原因,我将jobId变量声明为静态的。servlet构造函数正在为每个servlet实例(调用)计算此值。如果同时调用servlet几次,我在徘徊,调用之间共享静态jobId变量,这意味着某些线程会得到错误的jobId,或者每次调用都计算一次-所以线程启动的特定servlet将使用为该特定servlet计算的jobId(这是我希望它工作的方式)。有任何想法吗?非常感谢! 最佳答案

java - 无法实现的接口(interface)方法的正确行为

如果我有一个需要实现接口(interface)的类,但该接口(interface)上的一个或多个方法在这个特定类的上下文中没有意义,我应该怎么办?例如,假设我正在实现一个适配器模式,我想在其中创建一个实现java.util.Map的包装类通过包装一些不可变对象(immutable对象)并将其数据公开为键/值对。在这种情况下,方法put和putAll没有意义,因为我无法修改底层对象。那么问题是这些方法应该做什么? 最佳答案 任何不能根据接口(interface)语义实现的方法都应该抛出UnsupportedOperationExcep

java - 事务的传播行为

我正在为springaop使用基于注释的声明方法。示例代码ClassA{@Transactional(readOnly=false,propagation=Propagation.REQUIRES_NEW)add(){method1();method2();method3();}}但是我对propagation的使用还是存疑,是否propagation.Requires_New表示每次请求都会开启新的transaction第二个问题:method2,method3等方法失败会导致事务回滚吗?如果有什么可以帮助我学习交易传播,我将非常高兴。有人能给我一个我们需要参与现有交易的真实世界的例

java - 当目标路径是目录时,Files.newInputStream() 的无关紧要的行为?

注意:请运行下面的确切代码;不要对其进行改编,特别是不要使用File,因为此错误与新的java.nio.fileAPI相关好吧,这不是一个真正的“需要答案的问题”,而是一个需要证人的电话……场景:在你的操作系统上有一个目录,不管它是什么,你知道你有访问权限——用Unix的说法,你至少有读取权限(这意味着你可以列出其中的条目);在下面的代码中,假设System.getProperty("java.io.tmpdir")表示的路径符合要求;安装了OracleJDK或OpenJDK7+;这样您就可以使用java.nio.file。现在,下面的代码做的很简单:它尝试openanewInputS

java - JTextPane/JEditorPane 和奇怪的文本问题

我正在创建一个简单的聊天程序,我想最终显示html链接。我现在的问题是我无法让文本按照我的意愿出现在用户名旁边。我希望用户名加粗,文本显示在其旁边,但由于某种原因,非加粗文本居中显示。如果我不加粗用户名,它工作正常。上面两个是我将名字加粗时的显示方式,中间是名称未加粗时的显示方式,底部显示超链接我希望它像中间两个一样显示,但名称加粗。这是代码,我做错了什么?请注意,我尝试用JEditorPane替换JTextPane并且发生了同样的事情。packagecom.test;importjava.awt.BorderLayout;importjava.awt.Color;importjava

java - 不寻常的 Java 行为 - 为什么这有效?

我发现了一些有趣的行为......我无法确定这是错误还是无能,但目前倾向于无能。这段代码不会进入循环,即使有消息在等待:Messagemsg;while((msg=consumer.receiveNoWait())!=null){System.out.println(msg);}这段代码确实进入了循环,注意空赋值:Messagemsg=null;while((msg=consumer.receiveNoWait())!=null){System.out.println(msg);}此代码在Windows32位的Glassfish3.1.1b10HotSpot1.6_26上运行。我想不出